'''
Created on 04/06/2013

@author: mirta
'''
import unittest
from app import app

from test_helper2 import login
from test_helper2 import elegir_proyecto
from test_helper2 import get_id_when_radio_exist

ID_USUARIO='6'

class TestCase(unittest.TestCase):
    """
    Clase que implementa los test para el caso de uso Comite de Cambio.
    Utilizamos esta clase para realizar las pruebas de nuestra aplicacion SAP
    """
    
    def setUp(self):
        """
        se llama a este metodo antes de iniciar el test de la aplicacion
        , este metodo crea un nuevo cliente de prueba.
        Se especifican las acciones a ser tomadas antes de iniciar el test
        """
        
        print "Iniciando test"
        #self.db_fd, app.config['DATABASE'] = tempfile.mkstemp()
        self.app = app.test_client()
        self.acceso = login(self.app)
        self.proyecto = elegir_proyecto(self.app) 


    def tearDown(self):
        """
        se llama a este metodo al terminar el test el test de la aplicacion,
        en el se especifican las acciones a ser tomadas al finalizar el test
        """
        print "Terminando test"


    def test_get_all_comite(self):
        """
        Controla que se pueda acceder a la pagina principal de comite de cambio
        """
        request = self.app.get('/comite/administracion/', follow_redirects=True)
        #assert 'Administrador' in request.data
        self.assertEqual(request._status, '200 OK')
   
   
    def test_crear_comite(self):
        """
        Controla que se puede crear una un comite, y luego verifica si la fase fue 
        anhadida.
        """
        
        print "Probando crear comite de cambio"
        request = self._crear_comite(miembros=ID_USUARIO, observacion='comite test pyunit')
     
        self.assertEqual(request._status, '200 OK')
        print "Comite creado correctamente"

            
    def test_volver_crear(self):
        """
        Test que verifica que no se pueda volver a crear un comite en un proyecto
        """
        print "Probando crear un comite de nuevo"
        request = self._crear_comite(miembros=ID_USUARIO, observacion='comite test pyunit')
     
        assert 'El proyecto ya cuenta con un comite de cambio' in request.data
        print "Respuesta satisfactoria"
                
                
    def _crear_comite(self,miembros=ID_USUARIO, observacion='comite test pyunit'):
        """
        Metodo para crear un comite, lo crea y retorna la respuesta
        @param miembros: id de los miembros del nuevo comite
        @param observacion: observacion acerca del nuevo comite
        """
        request = self.app.post('/comite/crear/', data=dict(
            miembros=miembros,                                                
            observacion=observacion), follow_redirects=True)
        return request

    
    def _get(self, url ='/comite/administracion/'):
        """
        Metodo que obtiene la pagina de administracion de comite
        @param url: url de la pagina de administracion de comite
        """
        return self.app.get(url, follow_redirects=True)
    

        
if __name__ == '__main__':
    unittest.main()